package br.com.sipsoft.svola.entidades;

import java.util.Map;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="TBDIRF")
public class ResultDirf extends BaseEntity{
	

	@Id
	@Column(name="DIRF_ID")
	@SequenceGenerator(name="DIRF_SEQ", allocationSize = 1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	private Long id;
	
	@Column(name="DOC")
	private String doc;
	
	@Column(name="NOME")
	private String nome;
	
	@Column(name="JAN")
	private double jan;
	
	@Column(name="FEV")
	private double fev;
	
	@Column(name="MAR")
	private double mar;
	
	@Column(name="ABR")
	private double abr;
	
	@Column(name="MAI")
	private double mai;
	
	@Column(name="JUN")	
	private double jun;
	
	@Column(name="JUL")
	private double jul;
	
	@Column(name="AGO")
	private double ago;
	
	@Column(name="SETE")	
	private double set;
	
	@Column(name="OUT")
	private double out;
	
	@Column(name="NOV")
	private double nov;
	
	@Column(name="DEZ")
	private double dez;
	
	@Column(name="DECIMO_TERCEIRO")
	private double _13;
	
	@Column(name="TOTAL")
	private double total;
	
	@Column(name="RENDIMENTOS_TRIBUTAVEIS")
	private boolean rendimentosTributaveis;
	
	@Column(name="PREVIDENCIA_OFICIAL")
	private boolean previdenciaOficial;
	
	@Column(name="PREVIDENCIA_PRIVADA")
	private boolean previdenciaPrivada;
	
	@Column(name="DEPENDENTES")
	private boolean dependentes;
	
	@Column(name="PENSAO_ALIMENTICIA")
	private boolean pensaoAlimenticia;
	
	@Column(name="IMPOSTO_RETIDO")
	private boolean impostoRetido;
	
	@Column(name="TIPO_PESSOA")
	private int tipoPessoa;
	
	
	
	public ResultDirf(String nome , String doc, TipoPessoa tipoPessoa){
		this.nome= nome;
		this.doc = doc;
		this.tipoPessoa = tipoPessoa.getValue();
	}
	
	public void addRendimentosTributaveis(Map<String, Double> values){
		rendimentosTributaveis = true;
		preencherValoresMensais(values);
	}
	public void addPrevidenciaOficial(Map<String, Double> values){
		previdenciaOficial = true;
		preencherValoresMensais(values);
	}
	
	public void addPrevidenciaPrivada(Map<String, Double> values){
		previdenciaPrivada = true;
		preencherValoresMensais(values);
	}
	
	public void addDependentes(Map<String, Double> values){
		dependentes = true;
		preencherValoresMensais(values);
	}
	public void addPensaoAlimenticia(Map<String, Double> values){
		pensaoAlimenticia = true;
		preencherValoresMensais(values);
	}
	public void addImpostoRetido(Map<String, Double> values){
		impostoRetido = true;
		preencherValoresMensais(values);
	}
	
	private void preencherValoresMensais(Map<String, Double> values){
		String mes []= {"jan", "fev","mar","abr","mai", "jun", "jul","agos","set","out","nov","dez","total","13"};		
		jan = values.get(mes[0]);
		fev =	values.get(mes[1]);
		mar = values.get(mes[2]);
		abr =   values.get(mes[3]);
		mai = values.get(mes[4]);
		jun = values.get(mes[5]);
		jul = values.get(mes[6]);
		ago = values.get(mes[7]);
		set =  values.get(mes[8]);
		out =  values.get(mes[9]);
		nov = 	values.get(mes[10]);
		dez = values.get(mes[11]);
		total =  values.get(mes[12]);
		_13 = values.get(mes[13]) == null ? 0: values.get(mes[13]);		
	}

	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
	public String getCpf() {
		return doc;
	}

	public void setCpf(String cpf) {
		this.doc = cpf;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public double getJan() {
		return jan;
	}

	public void setJan(double jan) {
		this.jan = jan;
	}

	public double getFev() {
		return fev;
	}

	public void setFev(double fev) {
		this.fev = fev;
	}

	public double getMar() {
		return mar;
	}

	public void setMar(double mar) {
		this.mar = mar;
	}

	public double getAbr() {
		return abr;
	}

	public void setAbr(double abr) {
		this.abr = abr;
	}

	public double getMai() {
		return mai;
	}

	public void setMai(double mai) {
		this.mai = mai;
	}

	public double getJun() {
		return jun;
	}

	public void setJun(double jun) {
		this.jun = jun;
	}

	public double getJul() {
		return jul;
	}

	public void setJul(double jul) {
		this.jul = jul;
	}

	public double getAgo() {
		return ago;
	}

	public void setAgo(double ago) {
		this.ago = ago;
	}

	public double getSet() {
		return set;
	}

	public void setSet(double set) {
		this.set = set;
	}

	public double getOut() {
		return out;
	}

	public void setOut(double out) {
		this.out = out;
	}

	public double getNov() {
		return nov;
	}

	public void setNov(double nov) {
		this.nov = nov;
	}

	public double getDez() {
		return dez;
	}

	public void setDez(double dez) {
		this.dez = dez;
	}

	public double get_13() {
		return _13;
	}

	public void set_13(double _13) {
		this._13 = _13;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}

	public boolean isRendimentosTributaveis() {
		return rendimentosTributaveis;
	}

	public void setRendimentosTributaveis(boolean rendimentosTributaveis) {
		this.rendimentosTributaveis = rendimentosTributaveis;
	}

	public boolean isPrevidenciaOficial() {
		return previdenciaOficial;
	}

	public void setPrevidenciaOficial(boolean previdenciaOficial) {
		this.previdenciaOficial = previdenciaOficial;
	}

	public boolean isPrevidenciaPrivada() {
		return previdenciaPrivada;
	}

	public void setPrevidenciaPrivada(boolean previdenciaPrivada) {
		this.previdenciaPrivada = previdenciaPrivada;
	}

	public boolean isDependentes() {
		return dependentes;
	}

	public void setDependentes(boolean dependentes) {
		this.dependentes = dependentes;
	}

	public boolean isPensaoAlimenticia() {
		return pensaoAlimenticia;
	}

	public void setPensaoAlimenticia(boolean pensaoAlimenticia) {
		this.pensaoAlimenticia = pensaoAlimenticia;
	}

	public boolean isImpostoRetido() {
		return impostoRetido;
	}

	public void setImpostoRetido(boolean impostoRetido) {
		this.impostoRetido = impostoRetido;
	}

	public int getTipoPessoa() {
		return tipoPessoa;
	}

	public void setTipoPessoa(int tipoPessoa) {
		this.tipoPessoa = tipoPessoa;
	}
	
	public ResultDirf(){}
	
	public void save(){
		hibernateUtils.saveWithoutSession(this);
	}
	
}
